package org.aurora.remote;

import org.aurora.remote.protocol.RemoteRequest;
import org.aurora.remote.protocol.RemoteResponse;

public interface RemoteClient <T extends RemoteConnectionEventManager> extends RemoteService<T> {
    <RESPONSE extends RemoteResponse> RESPONSE send(RemoteRequest request, long timeoutMillis, Class<RESPONSE> responseClazz);

    <RESPONSE extends RemoteResponse> void sendAsync(RemoteRequest request, long timeoutMillis, SendCallback<RESPONSE> sendCallback);

    String getHost();

    int getPort();
}
